#region License

// Copyright (c) 2013, ClearCanvas Inc.
// All rights reserved.
// http://www.clearcanvas.ca
//
// This file is part of the ClearCanvas RIS/PACS open source project.
//
// The ClearCanvas RIS/PACS open source project is free software: you can
// redistribute it and/or modify it under the terms of the GNU General Public
// License as published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// The ClearCanvas RIS/PACS open source project is distributed in the hope that it
// will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
// Public License for more details.
//
// You should have received a copy of the GNU General Public License along with
// the ClearCanvas RIS/PACS open source project.  If not, see
// <http://www.gnu.org/licenses/>.

#endregion

using System;
using System.Windows.Forms;

namespace ClearCanvas.Desktop.View.WinForms
{
	public class DragDropObject : IDragDropObject
	{
		private readonly IDataObject _dataObject;

		public DragDropObject(IDataObject dataObject)
		{
			_dataObject = dataObject;
		}

		public string[] GetFormats()
		{
			return _dataObject.GetFormats();
		}

		public object GetData(string format)
		{
			return _dataObject.GetData(format);
		}

		public object GetData(Type type)
		{
			return _dataObject.GetData(type);
		}

		public T GetData<T>()
		{
			return (T) GetData(typeof (T));
		}

		public bool HasData(string format)
		{
			return _dataObject.GetDataPresent(format);
		}

		public bool HasData(Type type)
		{
			return _dataObject.GetDataPresent(type);
		}

		public bool HasData<T>()
		{
			return HasData(typeof (T));
		}

		public void SetData(object data)
		{
			_dataObject.SetData(data);
		}

		public void SetData(string format, object data)
		{
			_dataObject.SetData(format, data);
		}

		public void SetData(Type type, object data)
		{
			_dataObject.SetData(type, data);
		}
	}
}